package com.sdhs.system.service;

import java.util.List;

import com.sdhs.system.domain.MessageInfoDO;
import com.sdhs.system.domain.dto.MessageInfoDTO;
import com.sdhs.system.domain.vo.MessageInfoVO;

/**
 * 消息Service接口
 *
 * @author mz
 * @date 2023-09-04
 */
public interface IMessageInfoService {
    /**
     * 查询消息
     *
     * @param id 消息主键
     * @return 消息
     */
    MessageInfoVO selectMessageInfoById(Long id);

    /**
     * 查询安全项目消息
     *
     * @param id 消息主键
     * @return 消息
     */
    MessageInfoVO selectMessageInfoByNoticeId(Long id);
    /**
     * 查询消息列表
     *
     * @param messageInfoDTO 消息
     * @return 消息集合
     */
     List<MessageInfoVO> selectMessageInfoList(MessageInfoDTO messageInfoDTO);

    /**
     * 新增消息
     *
     * @param MessageInfo 消息
     * @return 结果
     */
     int insertMessageInfo(MessageInfoDO MessageInfo);

    /**
     * 修改消息
     *
     * @param MessageInfo 消息
     * @return 结果
     */
     int updateMessageInfo(MessageInfoDO MessageInfo);

    /**
     * 批量删除消息
     *
     * @param ids 需要删除的消息主键集合
     * @return 结果
     */
     int deleteMessageInfoByIds(Long[] ids);

    /**
     * 删除消息信息
     *
     * @param id 消息主键
     * @return 结果
     */
     int deleteMessageInfoById(Long id);


    /**
     * 更新我的所有消息为指定状态
     *
     * @param status
     * @return
     */
    int updateAllMsg(String status);


    /**
     * 发送消息
     *
     * @param messageInfoDTO 系统消息
     * @return 结果
     */
//    void sendMsg(MessageInfoDTO messageInfoDTO);
    
    /**
     * 获取消息列表
     * @param title
     * @param content
     * @param userNames 多个用,分割
     * @return
     */
    public List<MessageInfoDO> getMsgList(String title, String content, Long taskId, String type, String userNames);
    
    /**
     * 获取消息列表
     * @param title
     * @param content
     * @param userNameList
     * @return
     */
    public List<MessageInfoDO> getMsgList(String title, String content, Long taskId, String type, List<String> userNameList);
    
    /**
     * 批量发送消息（我的消息）
     * @param entityList
     */
    public void sendMsgBatch(List<MessageInfoDO> entityList);
    
    /**
     * 查询某个用户是否收到某个消息
     * @return
     */
    public Integer countByContent(String title, String content, String receiverUserName);
}
